const http = require("http");
const fs = require("fs");

http
  .createServer(function (request, response) {
    console.log("request come", request.url);
    if (request.url === "/") {
      const html = fs.readFileSync("test.html", "utf-8");
      response.writeHead(200, {
        "Content-Type": "text/html",
      });
      response.end(html);
    } else if (request.url === "/script.js") {
      //   console.log(request.headers);
      const etag = request.headers["if-none-match"]; // etag 与 'if-none-match'来配合使用进行资源是否更改验证
      if (etag === "777") {
        response.writeHead(304, {
          "Content-Type": "text/javascript",
          "Cache-Control": "max-age=2000000, no-Cache", // 只要服务器设置了no-Cache,就必须要经过服务器进行验证，虽然设置了max-age，表示资源可以缓存，但不能直接使用，要经过验证后才能使用
          "Last-Modified": "123",
          Etag: "777",
        });
        response.end("");  // 如果服务设置了304返回头，则会忽略服务端的返回内容，直接读取浏览器缓存的资源
      } else {
        response.writeHead(200, {
          "Content-Type": "text/javascript",
          "Cache-Control": "max-age=2000000, no-Cache", // 只要服务器设置了no-Cache,就必须要经过服务器进行验证，虽然设置了max-age，表示资源可以缓存，但不能直接使用，要经过验证后才能使用
          "Last-Modified": "123",
          Etag: "777",
        });
        response.end('console.log("script loaded")');
      }
    }
  })
  .listen(8888);

console.log("server listening on 8888");
